import axios from 'axios';
import { ListGUID } from '../config/ListGuid';
let baseInfo = {
  baseURL: `${ListGUID.NETCoreAPIUrl}`,
  baseURLStorage: '',
  baseAdminUrl: ''
};
//这是使用代理的路径
let baseUrl = '/api';
const controller = new AbortController();
// 创建axios实例，在这里可以设置请求的默认配置
const instance = axios.create({
  timeout: 60000, // 设置超时时间10s，如果10秒没有返回结果则中断请求，认为连接超时
  baseURL: baseInfo.baseURL // 根据自己配置的代理去设置不同环境的baseUrl
});
// 文档中的统一设置post请求头
instance.defaults.headers.post['Content-Type'] = 'application/json';
/** 添加响应拦截器  **/
instance.interceptors.response.use(
  response => {
    
    if (response.status === 200) {
      return Promise.resolve(response.data);
    } else {
      return Promise.reject(response.data.msg);
    }
  },
  error => {
    // 请求报错的回调可以和后端协调返回什么状态码，在此根据对应状态码进行对应处理
  }
);
/* 统一封装get请求 */
export const get = (url, params, config = {}) => {
  return new Promise((resolve, reject) => {
    instance({
      method: 'get',
      url,
      params,
      ...config
    })
      .then(response => {
        resolve(response.data);
      })
      .catch(error => {
        reject(error);
      });
  });
};

/* 统一封装post请求  */
export const post = (url, data, config = {}) => {
  return new Promise((resolve, reject) => {
    instance({
      method: 'post',
      url,
      data,
      ...config
    })
      .then(response => {
        resolve(response.data);
      })
      .catch(error => {
        reject(error);
      });
  });
};

export const abort = () => {
  controller.abort()
}